Adding new (or improve legacy) kernel-level internetworking functions, such as IP mobility support, on computers using software-based solutions is very difficult. Typically modifications to the IP stack that are built into an operating system, are required; a task that cannot be easily accomplished by independent software developers.
In the networking environment, data packets are dispatched across network connections by employing software drivers that control hardware modules. An operating system, such as, for example Microsoft Windows@, requires that drivers be programmed as passive, instantly responsive routines for the purpose of device 110. A driver does not have active control; it always waits to be called by the operating system. Accordingly, in response to a call, the driver will rapidly complete the specified 110 operation and return control back to the operating system as quickly as possible. If the underlying physical device cannot finish the 110 operation within a specified period of time, the driver will typically start the physical device, instruct the physical device to generate a hardware interrupt to notify the operating system after the 110 operation has finished, and immediately return control back to the operating system with a pending status.
A need exists for a network interface driver to support new (or improve legacy) internetworking protocols, a task that was previously addressed at the IP layer or above. Many internetworking protocols that are based on a client-server model require the client (and often the server) to have active, persistent control in order to manage signaling over a network connection. The signaling must account for transmission time over the network and unexpected breaks that can occur in the network connection. If a network interface driver is used to support internetworking protocols, the requirement for active, persistent control conflicts with the fundamental characteristics of a driver such as passiveness and instant response.
The present embodiments meet these needs.